package com.example.form.utils;

import org.apache.commons.codec.digest.DigestUtils;

/**
 * MD5加密⼯具类
 *
 * @Author
 */
public class MD5Util {
    /**对字符串进行MD5加密
     * 普通MD5加密
     * @param str 明文
     * @return  密⽂
     */
    public static String md5 (String str) {//传入要加密的密码
        return DigestUtils.md5Hex(str);//返回MD5加密后的密码字符串
    }
    /**
     * 原始字符串与Key组合进⾏⼀次MD5加密
     * @param str 原始字符串
     * @param key
     * @return 组合字符串⼀次MD5加密后的密⽂
     */
    public static String md5 (String str, String key) {
        return DigestUtils.md5Hex(str + key);//一起加密后的密码字符串返回
    }
/*** 对用户密码进行加密
 * @param str 密码明文
 * @param salt 扰动字符串(盐值)
 * @return 加密后的密⽂
 */
public static String md5Salt (String str, String salt) {//传入要加密的密码,和盐值
    return DigestUtils.md5Hex(DigestUtils.md5Hex(str) + salt);//原始密码MD5加密后,再次和扰动字符串(盐值)拼接,然后再一起进行一次MD5加密
}
    /**
     * 校验原⽂与盐加密后是否与传⼊的密⽂相同
     * @param original 原字符串
     * @param salt 扰动字符串
     * @param ciphertext 密⽂
     * @return true 相同, false 不同
     */
    public static boolean verifyOriginalAndCiphertext (String original, String
            salt, String ciphertext) {
        String md5text = md5Salt(original, salt);
        if (md5text.equalsIgnoreCase(ciphertext)) {
            return true;
        }
        return false;
    }
}
